package com.chenyu.util;

import com.chenyu.pojo.Email;
import org.dom4j.DocumentException;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class SendEmail {
    //QQ邮箱
    private  static Properties QQEmailprops =  null;
    //网易
    private  static Properties WcEmailprops = new Properties();
    private static SendEmail sendEmail = new SendEmail();
    private SendEmail(){
        init();
    }


    //trueQQ邮箱
    public static  void keyPressed(Email email, Boolean bool){
        final Properties props;
        if(bool){
            props = QQEmailprops;
        }else{
            props = WcEmailprops;
        }
        // 构建授权信息，用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名、密码(授权码)
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };
        // 使用环境属性和授权信息，创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        try {
            // 设置发件人
            InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
            message.setFrom(form);
            // 设置收件人的邮箱
            InternetAddress to = new InternetAddress(email.getSender());
            message.setRecipient(RecipientType.TO, to);
            // 设置邮件标题
            message.setSubject(email.getTitle());
            // 设置邮件的内容体
            message.setContent(email.getContent(),"text/html;charset=UTF-8");
            // 最后当然就是发送邮件啦
            Transport.send(message);
            System.err.println("发送成功");
        } catch (Exception e1) {
            System.err.println("错误");
            e1.printStackTrace();
        }
    }

    /**
     * 初始化配置信息
     */
    public static void init(){
        try {
            QQEmailprops = Dom4JUtil.getThreeElemts("Email.cfg.xml","Tencent");
            WcEmailprops = Dom4JUtil.getThreeElemts("Email.cfg.xml","NetEase");
        } catch (DocumentException e) {
            e.printStackTrace();
        }





//        // 创建Properties 类用于记录邮箱的一些属性
//        // 表示SMTP发送邮件，必须进行身份验证
//        QQEmailprops.put("mail.smtp.auth", "true");
//        //SMTP服务器地址
//        QQEmailprops.put("mail.smtp.host", "smtp.qq.com");
//        //端口号，QQ邮箱给出了两个端口，587/465
//        QQEmailprops.put("mail.smtp.port", "587");
//        // 此处填写你的账号
//        QQEmailprops.put("mail.user", "lyp2217210049@qq.com");
//        // 此处的密码就是前面说的16位STMP口令
//        //1.hffpqilvzmcddigd
//        QQEmailprops.put("mail.password", "hffpqilvzmcddigd");
//
//        // 创建Properties 类用于记录邮箱的一些属性
//        WcEmailprops.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");// 设置协议
//        // 表示SMTP发送邮件，必须进行身份验证
//        WcEmailprops.put("mail.smtp.auth", "true");
//        //必须选择协议
//        WcEmailprops.setProperty("mail.transport.protocol", "smtp");
//        //SMTP服务器地址
//        WcEmailprops.put("mail.smtp.host", "smtp.163.com");
//        //端口号，QQ邮箱给出了两个端口，465、994
//        WcEmailprops.put("mail.smtp.port", "465");
//        // 此处填写你的账号
//        WcEmailprops.put("mail.user", "sky_chenyu@163.com");
//        // 此处的密码就是STMP口令--授权码
//        //1.hffpqilvzmcddigd
//        WcEmailprops.put("mail.password", "15773579717lyp");
    }
}
